package praktikum4Reservierungskomponente.Komponente;

import praktikum4GastKomponente.Datentyp.DGastNr;
import praktikum4GastKomponente.Interfaces.IGastServicesFuerReservierung;
import praktikum4GastKomponente.Komponente.GastKomponente;
import praktikum4Reservierungskomponente.Anwendungsfall.AFReservierungsServices;
import praktikum4Reservierungskomponente.Datentyp.DReservierungsNr;
import praktikum4Reservierungskomponente.Datentyp.DZimmerNr;
import praktikum4Reservierungskomponente.Datentyp.DZusatzleistungName;
import praktikum4Reservierungskomponente.Datentyp.DZusatzleistungNr;
import praktikum4Reservierungskomponente.Entitaeten.EReservierung;
import praktikum4Reservierungskomponente.Entitaeten.EZusatzleistungen;
import praktikum4Reservierungskomponente.Interfaces.IReservierungServices;

public class ReservierungsKomponente {

	public static IGastServicesFuerReservierung gastKomponente;
	
	public ReservierungsKomponente(IGastServicesFuerReservierung gastKomponente){
		this.gastKomponente = gastKomponente;
		praktikum4Reservierungskomponente.Anwendungsfall.AFReservierungsServices.reset();
	}

	public EZusatzleistungen erzeugeZusatzleistungen(String name) {
		return AFReservierungsServices.erzeugeZusatzleistung(new DZusatzleistungName(name));
	}

	public EReservierung reserviereZimmer(int gastNr, int zimmerNr) {
		return AFReservierungsServices.reserviereZimmer(new DGastNr(gastNr),new DZimmerNr(zimmerNr));
	}

	public void bucheZusatzleistungen(int reservierungNr,int zusatzleistungNr) {
		AFReservierungsServices.bucheZusatzleistung(new DReservierungsNr(reservierungNr), new DZusatzleistungNr(zusatzleistungNr));	
	}

}